package cn.edu.lingnan.controller;


import cn.edu.lingnan.common.Result;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/Common")
public class CommonController {



    @PostMapping("/upload")
    public Result upload(MultipartFile file,@RequestParam String Info) throws IOException {
        String Filename = file.getOriginalFilename();
        System.out.println(Filename);
        if (Filename!=null){
            int i = Filename.indexOf(".");
            String substring = Filename.substring(i);
            System.out.println(substring);
            if (substring.equals(".jpg")||substring.equals(".png")||substring.equals(".jpeg")){
//                获取上传文件的名称
                String FileName = Filename.substring(0, i);
                System.out.println(FileName);
                //对获取的图片进行组装操作
                String s =  "lingnan"+ Info +".jpg";

                //设置好保存的路径
//                路径格式:"D:/XXX文件夹/XXX文件夹"
//                由于这里我想直接放在项目下，所以选了一个项目的路径
                String path = "D:/contest/DaoChu";
                List<File> allImage = getAllImage(path);
                for (File F:allImage) {
                    System.out.println(F.getName());
                    if (F.getName().equals(s)){
                        //遍历后看看有没有重复上传
                        return Result.error("501","请不要上传重复文件");
                    }
                }
                File file1 = new File(path,s);
                //将文件存储到指定的地方
                file.transferTo(file1);
                return Result.success();
            }
            return Result.error();
        }



        return Result.success();
    }

    //此方法是遍历存储图片的文件夹
    private List<File> getAllImage(String AcquirePath){
        //创建好一个集合用来存放所有图片
        List<File> AllFile = new ArrayList<>();
        //把存放图片的路径给文件流
        File file = new File(AcquirePath);
        File[] files = file.listFiles();
        for (File f:files) {
            //遍历后添加到集合中
                AllFile.add(f);
        }
        return AllFile;
    }


}
